#pragma once

#include "stdint.h"
#include "RCS_protocol.h"
/**
 * @brief
 * 基站的储存用两种数据结构，
 * 对于单一型的基站，只要处于范围中就足够，不需要知道基站id类型的，采用数组保存，方便查找
 * 对于需要知道具体id的基站，采用链表保存，方便动态储存多个此类型的基站。
 */
typedef enum station_state_e
{
    KEEP_NO_STA, //更新状态后计数为0
    RISE_STA,    //更新状态前计数为0.
    KEEP_HOLD_STA,//更新状态后计数 > 1
    DOWN_STA,    //更新状态后计数 = 1
} station_state_t;

#define STATION_ID_DEFAULT 123456

extern const char station_name_table[STATION_CLASS_NUM][12];

uint8_t init_station_list(void);
uint8_t station_list_self_subtraction(station_type_t sta_idx);
uint8_t append_to_station_list(station_type_t sta_idx, uint32_t id, int16_t rssi);
uint8_t replace_to_station_list(station_type_t sta_idx, uint32_t id, int16_t rssi);
void select_team_by_station(void);
void station_hp_handle(void);
void station_reborn_handle(void);
uint8_t period_upload_station(station_type_t sta_idx);
void station_invincible_handle(void);